Stata+R: 一文读懂中介效应分析

您所在的位置:网站首页 中介效应分析 r实现 Stata+R: 一文读懂中介效应分析

Stata+R: 一文读懂中介效应分析

2023-09-23 07:48| 来源: 网络整理| 查看: 265

目录Stata+R: 一文读懂中介效应分析背景介绍1. 中介效应简介2. 中介效应分析2.1 逐步检验回归系数2.2 系数乘积检验法2.2.1 Sobel 检验2.2.2 Bootstrap 检验2.3 系数差异检验法3. 中介效应分析示例3.1 调用数据并定义变量3.2 多方法进行中介效应分析3.2.1 逐步检验回归系数方法3.2.2 两步回归法 (two-step regression)3.2.3 sobel 检验3.2.4 bootstrap 检验3.2.5 结构方程方法3.3 类别变量的中介效应检验3.3.1 广义结构方程方法调用数据并定义变量进行模型估计3.3.2 计算置信区间 CI调用数据并定义变量方法介绍具体实施步骤4. 总结参考文献:

Stata+R: 一文读懂中介效应分析 背景介绍

在研究中,我们探索自变量 X 对因变量 Y 产生的影响,得到 X 和 Y 在实际或理论上的关系,进而我们试图探索两者之间关系的内部机制或原理,中介效应分析为回答这一问题提供了可能性。

在本篇推文中,我们为大家梳理出几个广泛使用的中介效应分析方法和实现程序,供大家参考。

1. 中介效应简介

中介效应:通俗来说,我们分析自变量 X 对因变量 Y 产生的影响,如果变量 X 通过影响变量 M 来影响变量 Y ,那么这个变量 M 就是中介变量。例如租客 (X) 通过中介公司 (M) 找到合适的房子 (Y),中介公司就在其中扮演了中介变量的角色,中介变量发挥的作用就称为中介效应。

2. 中介效应分析

中介效应分析是检验某一变量是否成为中介变量,发挥何种程度中介作用的重要步骤。我们先以最简单的单中介模型为例来说明中介效应分析的思路,再具体介绍三种中介效应分析方法。

假设所有变量都已经中心化 (即均值为零),可用下图来描述变量之间的关系。图中分为两个部分, 图 1(a) 是自变量 X 作用于因变量 Y ,路径系数为 c 。由于不涉及第三个变量,所以系数 c 代表了自变量作用于因变量的总效应。图 1(b) 是在控制中介变量 M 以后,自变量 x 和因变量 Y 之间的关系,其中系数 a 代表自变量作用于中介变量的效应,系数 b 表示中介变量作用于因变量的效应,两者构成图中变量间关系的间接效应,系数 c’ 代表考虑在控制中介变量后,自变量作用于因变量的效应,也就是自变量和因变量之间的直接效应。那么,图 1(b) 中的变量间总效应就应该等于直接效应加上间接效应,即总效应 = ab + c’。 将图1 (a) 和 (b) 结合起来,我们就得到了 c= ab + c’,c 为总效应,c’ 为直接效应, ab 为中介效应也称间接效应。我们做中介效应分析就是要检验 ab 效应是否存在,以及它在总效应中的占比,体现中介效应的作用程度。

img

2.1 逐步检验回归系数

[公式]

逐步检验回归系数的方法分为三步 (Baron & Kenny, 1986; Judd & Kenny, 1981;温忠麟等,2004):

第一步:检验方程 (1) 的系数 c,也就是自变量 X 对因变量 Y 的总效应; 第二步:检验方程 (2) 的系数 a,也就是自变量 X 和 中介变量 M 的关系; 第三步:控制中介变量 M 后,检验方程 (3) 的系数 c’ 和系数 b ;

判定依据:

系数 c 显著,即 [公式] 被拒绝; 系数 a 显著,即 [公式] 被拒绝,且系数 b 显著,即 [公式] 被拒绝; 同时满足以上两个条件,则中介效应显著; 如果在满足以上两个条件的同时,在方程 (3) 中,系数 c’ 不显著,则称为完全中介;

注意事项:

逐步检验回归系数方法简单易懂,是检验中介效应最常用的方法; 逐步检验的检验力在各种方法中是最低的 (Fritz & MacKinnon, 2007; Hay, 2009; MacKinnonet al., 2002)。就是说,当中介效应较弱的时候,逐步检验回归系数的方法很难检验出中介效应显著,但反过来理解,温忠麟等 (2014) 提出如果研究者用依次检验已经得到显著的结果, 检验力低的问题就不再是问题; 方程 (1) 的系数 c 显著是逐步检验回顾系数方法的基础,但是这一点也受到了后来研究的挑战,因为在有些情况下 c 不显著恰恰是受到了中介效应的影响。例如,工人的智力 (X) 按理说应该和工人在产线中犯得错误数量 (Y) 反向相关,但是数据呈现两者之间的并不相关,也就是方程 (1) 的系数 c 不显著。经过分析,发现是工人在工作中的无聊程度 (M) 在起作用。在所有其他条件相同的情况下,越聪明的工人会表现出越高的无聊水平,X 和 M 正相关,方程 (2) 的系数 a 符号为正,而无聊与错误的数量呈正相关,M 和 Y 正相关,方程 (3) 的系数 b 符号为正,越聪明的工人将犯越少的错误,即 X 和 Y 负相关,方程 (3) 的系数 c’ 符号为负。这样虽然中介变量在发挥作用,总效应 c (= ab + c’) 却因为直接效应 c’ 和间接效应 ab 的相互抵消而不再显著,即所谓的抑制 / 遮掩模型 (Suppression model) (MacKinnon, Krull, & Lockwood, 2000)。在实践中直接和间接效应完全抵消的情况并不常见,但是在直接和间接效应大小相似或符号相反必然存在,甚至会影响因变量和自变量之间的整体关系,所以逐步检验法可能会错过一些实际存在的中介效应; 2.2 系数乘积检验法

检验系数乘积是直接针对假设 [公式] 提出的检验方法,有多种计算公式,我们介绍两种常用的方法。

2.2.1 Sobel 检验

目前最常用的就是 Sobel (1982, 1988),检验统计量为 [公式] ,其中 [公式][公式] 分别是 a 和 b 的估计值,[公式] 的标准误为:

[公式]

[公式][公式] 分别是 [公式][公式] 的标准误。

模拟研究发现,Sobel 法的检验力高于依次检验回归系数法 (MacKinnon et al., 2002; 温忠麟等,2004),也就是说 Sobel 可以检验出比前者更多的中介效应,但如果两种方法检验的结果都显著,依次检验结果要强于 Sobel 检验结果 (温忠麟等,2004); 检验系数乘积的统计量推导需要假设 [公式] 服从正态分布,这一点是很难保证的,因为即使 [公式][公式] 服从正态分布也无法保证两者的乘积服从正态分布,因而 Sobel 检验也存在一定的局限性; 2.2.2 Bootstrap 检验

Bootstrap 检验的也是 [公式],它根据标准误的理论概念,将样本容量很大的样本当作总体,进行有放回抽样 (抽样次数可以自己定),从而得到更为准确的标准误。例如,将一个容量为 500 的样本当作 Bootstrap 总体, 从中有放回地重复取样, 可以得到一个 Bootstrap 样本 (容量还是500)。对这 500 个 Bootstrap 样本,可以得到 500 个系数乘积的估计值,其全体记为 [公式],将它们按数值从小到大排序, 其中第 2.5 百分位点和第 97.5 百分位点就构成 ab 的一个置信度为 95% 的置信区间,如果这个置信区间不包含 0,则说明拒绝原假设 [公式],系数乘积显著 (方杰,张敏强,2012;Preacher & Hayes, 2008;Preacher, Rucker, &Hayes, 2007;温忠麟,刘红云,侯杰泰,2012)

bootstrap 的前提条件是样本能够代表总体; 模拟研究发现,与其他中介效应检验方法相比, Bootstrap 具有较高的统计效力,Bootstrap 法是公认的可以取代 Sobel 方法而直接检验系数乘积的方法 (温忠麟,叶宝娟,2014); 2.3 系数差异检验法

差异系数检验的是 [公式],因为通常情况下,[公式],因此,乘积系数法和差异系数法的检验效力是基本上相同的,区别在于两者的标准误不同。

差异系数检验方法犯错的概率要高于系数乘积检验法 (MacKinnon et al., 2002; 温忠麟等,2004),很少使用。

连享会 最新专题 直播

3. 中介效应分析示例

接下来,我们借助 Stata 自带案例展示上述中介效应分析方法的具体操作。

3.1 调用数据并定义变量

数据基本描述:这是一组有关大型百货公司销售人员的数据,我们用来讨论经理的激励与员工工作表现之间的关系,基本假设是:经理的激励 (perceived support from managers) 可能通过影响员工的工作满意度 (job satisfaction) 而影响员工的工作表现 (job performance)。

. use "http://www.stata-press.com/data/r15/gsem_multmed" //调用数据 (Fictional job-performance data) . summarize //查看数据分布 Variable | Obs Mean Std. Dev. Min Max -------------+-------------------------------------------------------- branch | 1500 38 21.65593 1 75 support | 1500 .0084667 .5058316 -1.6 1.8 satis | 1500 .0212 .6087235 -1.6 2 perform | 1500 5.005317 .8949845 2.35022 8.084294

数据分布可以看到,我们的样本量为 1500, 其中所需使用的变量为:

support:经理的激励,自变量,连续变量 perform:员工的工作表现,因变量,连续变量 satis:员工的工作满意度,中介变量,连续变量 3.2 多方法进行中介效应分析

接下来我们展现多种方法进行的中介效应分析程序,并分析结果。

3.2.1 逐步检验回归系数方法

逐步检验回归系数方法分为三步:

reg perform support //分析 x 和 y 之间的关系 reg satis support //分析 x 和 m 之间的关系 reg perform satis support // 加入 m,看 x 和 y 之间的关系

第一步,reg support peform 结果显示员工的工作表现与经理的激励显著相关,回归系数 c=0.822,可以进行下一步检验。

. reg perform support //第一步,查看 x 与 y 之间的关系 Source | SS df MS Number of obs = 1500 -------------+------------------------------ F( 1, 1498) = 412.00 Model | 258.999482 1 258.999482 Prob > F = 0.0000 Residual | 941.695489 1498 .628635173 R-squared = 0.2157 -------------+------------------------------ Adj R-squared = 0.2152 Total | 1200.69497 1499 .800997312 Root MSE = .79287 ------------------------------------------------------------------------------ perform | Coef. Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- support | .8217557 .0404849 20.30 0.000 .7423427 .9011687 _cons | 4.99836 .0204746 244.13 0.000 4.958198 5.038522 ------------------------------------------------------------------------------

第二步,reg satis perform 回归结果显示, 经理的激励显著增加员工的工作满意度,系数 a=0.229。

. reg satis support //第二步,查看 x 与 m 之间的关系 Source | SS df MS Number of obs = 1500 -------------+------------------------------ F( 1, 1498) = 56.23 Model | 20.0948214 1 20.0948214 Prob > F = 0.0000 Residual | 535.351023 1498 .357377185 R-squared = 0.0362 -------------+------------------------------ Adj R-squared = 0.0355 Total | 555.445844 1499 .370544259 Root MSE = .59781 ------------------------------------------------------------------------------ satis | Coef. Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- support | .2288945 .0305251 7.50 0.000 .1690181 .2887709 _cons | .019262 .0154376 1.25 0.212 -.0110195 .0495436 ------------------------------------------------------------------------------

第三步,reg perform satis support 在加入工作满意度后,员工的表现和经理激励之间的显著关系没有发生变化,但是系数由第一步的 c=0.822 减小到 c’=0.616,员工的工作满意度和员工的表现之间显著相关,系数 b=0.898,说明工作满意度在经理激励和员工表现之间起到了部分中介的作用。

. reg perform satis support //第三步:加入中介变量 m, 查看 x 与 y 之间的关系 Source | SS df MS Number of obs = 1500 -------------+------------------------------ F( 2, 1497) = 1015.21 Model | 691.131957 2 345.565979 Prob > F = 0.0000 Residual | 509.563014 1497 .340389455 R-squared = 0.5756 -------------+------------------------------ Adj R-squared = 0.5750 Total | 1200.69497 1499 .800997312 Root MSE = .58343 ------------------------------------------------------------------------------ perform | Coef. Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- satis | .8984401 .0252156 35.63 0.000 .8489785 .9479017 support | .6161077 .0303447 20.30 0.000 .556585 .6756303 _cons | 4.981054 .015074 330.44 0.000 4.951486 5.010622 ------------------------------------------------------------------------------

完整结果解读

经理的激励对员工表现的总效应是 0.822,效果显著; 经理激励对员工表现的直接效应为 0.616,虽然结果显著,但是影响并不大; 经理激励通过工作满意度对员工表现发挥的间接效应为 0.206 (=0.898 * 0.229),也就是我们说的中介效应; 中介效应在总效应中占比 25.02% (=0.898 * 0.229 / 0.822); 传统的逐步检验回归系数方法受到了很多挑战,建议进一步进行其他方法的检验,稳健中介效应效果。 3.2.2 两步回归法 (two-step regression)

Zhao, Lynch et al. (2010) 对传统的逐步检验回归系数方法提出再次思考,但其具体的步骤方法与逐步检验回归系数方法接近,只是取消了第一步中的检验自变量 x 和因变量 y 之间的关系,分为两步:

reg satis support //分析 x 和 m 之间的关系 reg perform satis support // 加入 m,看 x 和 y 之间的关系

第一步,reg satis perform 回归结果显示,经理的激励显著增加员工的工作满意度,系数 a=0.229。

. reg satis support //第二步,查看 x 与 m 之间的关系 Source | SS df MS Number of obs = 1500 -------------+------------------------------ F( 1, 1498) = 56.23 Model | 20.0948214 1 20.0948214 Prob > F = 0.0000 Residual | 535.351023 1498 .357377185 R-squared = 0.0362 -------------+------------------------------ Adj R-squared = 0.0355 Total | 555.445844 1499 .370544259 Root MSE = .59781 ------------------------------------------------------------------------------ satis | Coef. Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- support | .2288945 .0305251 7.50 0.000 .1690181 .2887709 _cons | .019262 .0154376 1.25 0.212 -.0110195 .0495436 ------------------------------------------------------------------------------

第二步,reg perform satis support 回归结果和第一种方法相同:

. reg perform satis support //第三步:加入中介变量 m, 查看 x 与 y 之间的关系 Source | SS df MS Number of obs = 1500 -------------+------------------------------ F( 2, 1497) = 1015.21 Model | 691.131957 2 345.565979 Prob > F = 0.0000 Residual | 509.563014 1497 .340389455 R-squared = 0.5756 -------------+------------------------------ Adj R-squared = 0.5750 Total | 1200.69497 1499 .800997312 Root MSE = .58343 ------------------------------------------------------------------------------ perform | Coef. Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- satis | .8984401 .0252156 35.63 0.000 .8489785 .9479017 support | .6161077 .0303447 20.30 0.000 .556585 .6756303 _cons | 4.981054 .015074 330.44 0.000 4.951486 5.010622 ------------------------------------------------------------------------------

完整结果解读

分析结果和第一种方法几乎一致,只是需要自己计算经理激励对员工工作表现的总效应,总效应 = 直接效应 + 间接效应; 经理激励对员工表现的直接效应为 0.616,虽然结果显著,但是影响并不大; 经理激励通过工作满意度对员工表现发挥的间接效应为 0.206 (=0.898 * 0.229),也就是我们说的中介效应; 中介效应在总效应中占比 25.02% (=0.898 * 0.229 / (0.616 + 0.898 * 0.229)); 建议进一步进行检验,稳健中介效应效果。 3.2.3 sobel 检验

第一步:安装 segmediation 命令包 findit sgmediation

findit sgmediation

原先可通过此命令下载来自 UCLA 的 segmediation 命令包,但是这个网址取消了,可通过网络等方式获取此命令,例如:人大经济论坛 https://bbs.pinggu.org/thread-6354003-1-1.html

第二步:进行分析

sgmediation perform, mv(satis) iv(support)

命令会自动检验变量之间的关系路径,并提供中介效应在总效应中的占比和显著值。如果需要加入控制变量,sgmediation y, mv(m) iv(x) cv(c)。具体结果如下:

. sgmediation perform, mv(satis) iv(support) //用 sobel 方法检验中介变量 Model with dv regressed on iv (path c) //这里,Stata 自动检验经理激励和员工工作表现之间的路径,形成路径 c Source | SS df MS Number of obs = 1500 -------------+------------------------------ F( 1, 1498) = 412.00 Model | 258.999482 1 258.999482 Prob > F = 0.0000 Residual | 941.695489 1498 .628635173 R-squared = 0.2157 -------------+------------------------------ Adj R-squared = 0.2152 Total | 1200.69497 1499 .800997312 Root MSE = .79287 ------------------------------------------------------------------------------ perform | Coef. Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- support | .8217557 .0404849 20.30 0.000 .7423427 .9011687 _cons | 4.99836 .0204746 244.13 0.000 4.958198 5.038522 ------------------------------------------------------------------------------ Model with mediator regressed on iv (path a) //这里,Stata 检验中介变量 (工作满意度) 与自变量 (经理激励) 之间的关系,形成路劲 a Source | SS df MS Number of obs = 1500 -------------+------------------------------ F( 1, 1498) = 56.23 Model | 20.0948214 1 20.0948214 Prob > F = 0.0000 Residual | 535.351023 1498 .357377185 R-squared = 0.0362 -------------+------------------------------ Adj R-squared = 0.0355 Total | 555.445844 1499 .370544259 Root MSE = .59781 ------------------------------------------------------------------------------ satis | Coef. Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- support | .2288945 .0305251 7.50 0.000 .1690181 .2887709 _cons | .019262 .0154376 1.25 0.212 -.0110195 .0495436 ------------------------------------------------------------------------------ Model with dv regressed on mediator and iv (paths b and c') //加入中介变量, Stata 再次检验经理支持对员工工作表现的影响 Source | SS df MS Number of obs = 1500 -------------+------------------------------ F( 2, 1497) = 1015.21 Model | 691.131957 2 345.565979 Prob > F = 0.0000 Residual | 509.563014 1497 .340389455 R-squared = 0.5756 -------------+------------------------------ Adj R-squared = 0.5750 Total | 1200.69497 1499 .800997312 Root MSE = .58343 ------------------------------------------------------------------------------ perform | Coef. Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- satis | .8984401 .0252156 35.63 0.000 .8489785 .9479017 support | .6161077 .0303447 20.30 0.000 .556585 .6756303 _cons | 4.981054 .015074 330.44 0.000 4.951486 5.010622 ------------------------------------------------------------------------------ Sobel-Goodman Mediation Tests //进行 Sobel 检验,原假设 $H0 : ab=0$ Coef Std Err Z P>|Z| Sobel .20564799 .02802571 7.338 2.172e-13 //我们需要关注这个部分的 P 值,这里的 P|Z| a coefficient = .228894 .030525 7.49857 6.5e-14 // 这里分别提供了输入命令三个变量之间的关系路径系数 b coefficient = .89844 .025216 35.6304 0 Indirect effect = .205648 .028026 7.33783 2.2e-13 Direct effect = .616108 .030345 20.3036 0 Total effect = .821756 .040485 20.2979 0 Proportion of total effect that is mediated: .25025442 //这里 Stata 直接帮我们计算出中介效应在总效应中的占比 25.03% Ratio of indirect to direct effect: .3337858 Ratio of total to direct effect: 1.3337858

完整结果解读

经理激励对员工工作表现的总效应,等于直接效应 0.616 加上 间接效应 0.206,总效应为 0.822; 中介效应的 Sobel 检验 P 值小于 0.05,说明中介效应成立; 计算出的中介效应在总效应中占比为 25.03%。 3.2.4 bootstrap 检验 bootstrap r(ind_eff) r(dir_eff), reps(500) : /// sgmediation perform, mv(satis) iv(support) //计算中介效应和间接效应 estat bootstrap, percentile bc //计算置信区间

bootstrap 抽样次数可以自己设定,这里我们设定为 500。如下命令会计算变量间的直接效应 _bs_1 和间接效应 _bs_2:

bootstrap r(ind_eff) r(dir_eff), reps(500) : sgmediation perform, mv(satis) iv(support)

如果需要加入控制变量,命令为:

bootstrap r(ind_eff) r(dir_eff), reps(500) : sgmediation y, mv(m) iv(x) cv(c)

进而可以使用 estat bootstrap, percentile bc 命令计算间接效应的置信区间,根据 _bs_2 置信区间是否包含 0 判断中介效应是否成立。具体结果如下:

. bootstrap r(ind_eff) r(dir_eff), reps(500) : sgmediation perform, mv(satis) iv(support) // bootstrap 方法首先计算出直接效应 bs_1 和间接效应 bs_2 (running sgmediation on estimation sample) Bootstrap replications (500) ----+--- 1 ---+--- 2 ---+--- 3 ---+--- 4 ---+--- 5 .................................................. 50 .................................................. 100 .................................................. 150 .................................................. 200 .................................................. 250 .................................................. 300 .................................................. 350 .................................................. 400 .................................................. 450 .................................................. 500 Bootstrap results Number of obs = 1500 Replications = 500 command: sgmediation perform, mv(satis) iv(support) _bs_1: r(ind_eff) //间接效应 = 0.206 _bs_2: r(dir_eff) //直接效应 = 0.616 ------------------------------------------------------------------------------ | Observed Bootstrap Normal-based | Coef. Std. Err. z P>|z| [95% Conf. Interval] -------------+---------------------------------------------------------------- _bs_1 | .205648 .0282388 7.28 0.000 .150301 .260995 _bs_2 | .6161077 .0305996 20.13 0.000 .5561335 .6760818 ------------------------------------------------------------------------------ . estat bootstrap, percentile bc //这里计算直接效应和间接效应的置信区间 Bootstrap results Number of obs = 1500 Replications = 500 command: sgmediation perform, mv(satis) iv(support) _bs_1: r(ind_eff) _bs_2: r(dir_eff) ------------------------------------------------------------------------------ | Observed Bootstrap | Coef. Bias Std. Err. [95% Conf. Interval] -------------+---------------------------------------------------------------- _bs_1 | .20564799 -.0008603 .02823879 .1478535 .2641403 (P) | .1528905 .2683623 (BC) _bs_2 | .61610768 .0003294 .03059962 .559106 .6745357 (P) //我们需要关注这个地方的置信区间,很显然不包含 0 ,中介效应成立 | .5592248 .6750107 (BC) ------------------------------------------------------------------------------ (P) percentile confidence interval (BC) bias-corrected confidence interval

完整结果解读

经理激励对员工工作表现的总效应,等于直接效应 0.616 加上 间接效应 0.206,总效应为 0.822,中介效应占比为 25.06%; 注意:bootstrap命令有时不稳定,可能会出现 'r(ind_eff)' evaluated to missing in full sample 报错,可以通过换高版本 Stata 或者稍后再试等方法尝试解决。 3.2.5 结构方程方法

Stata 也可以通过结构方程 (sem) 或者广义线性回归 (gsem) 的方式检验中介效应。分为两步:

sem (perform


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3